Yo!這應該就是我的最後一篇的鐵人文啦!撒花
其實Git真的很多東西可以說,一下子要講一些細節的操作真的很花篇幅,但偏偏鐵人只有30天,其實要說操作Git這件事情,我個人認為其實在實作的過程真的要用Git做事情,除了本地端用Git自己紀錄自己的東西,其他的就是Git跟GitHub的連結了。
Well,其實自己之前也用過GitHub上傳過資料,但我那個時候不知道Git,所以我就直接把檔案拖曳進去GitHub上,真的超蝦!
都要幹工程師了,總要用一些工程師Skill吧!
那我們就開始囉!
專案名稱輸入一下:
然後就給它create repository點下去
這個時候就會看到這些詳細的資料,好啦就是說明一些Git的指令:
那這邊主要會有兩種途徑說明:
如果是要做一個全新專案,那就採用上面的:
create a new repository on the command line
如果要上傳新的專案,那就採用下面的
push an existing repository from the command line
先創個目錄,然後把一個叫做README的檔案加進去:
然後一樣
git add READ.ed
git commit -m "first commit"
完成之後,我們接下來要設定推上GitHub伺服器的設定了!
需要取用遠端節點的一些資料:
git@github.com:terminal201467/practice-git.git
設定好了遠端節點之後,就來推東西上去吧!
git push -u origin master
try agin:
嗯?看來問題是出在public key,來去看看。
關於public key是什麼呢?這邊簡單的講一下:其實我們Push在Git裡面做過的紀錄,其中一個過程就是確認git跟GitHub的連接要透過什麼辨認....我的理解是這樣。
所以我們挑選用SSH來作為遠端的辨認的時候,勢必要設定一組Key,來作為我們Push的關鍵。
上面那個錯誤我們其實就是著重於:
git@github.com:Permission denied (publickey).
所以這個時候,就要去創建個key了:
ssh-keygen -t rsa
然後就會出現下面這個畫面,然後就給它按下y,這個時候key就創完了。
然後下面兩個指令也要做一下,把新的ssh-key加進去git裡面
ssh-add
ssh-agent
但最後這個指令一定要輸入,才會產生丟在git上面的金鑰。
cat ~/.ssh/id_rsa.pub
上面這個指令輸完了之後,我們就去GitHub設定SSH金鑰吧:
SSH and GPG keys
新增一個金鑰,然後把剛剛下面這個指令產生的一大堆亂碼貼過去,然後title稍微設一下就可以了
cat ~/.ssh/id_rsa.pub
(下面是完成圖)
然後我們再push一次吧!
git push -u origin master
嗚嗚,好感動,終於把東西push上去GitHub了。
如果說Push就是把自己在git上的紀錄傳上去,那麼Pull就是把GitHub上的東西拉下來,這個應該很直白。
所以....這個時候要來介紹一個指令:
git fetch
簡單的說,這個指令就是會把GitHub的東西拉下來
那我來試試。
嗯?Nothing happend。
啊,因為GitHub上面的東西跟我現在Git的東西是一樣的齁,所以我要在GitHub上做一些改動。
下面我會新增一個README
然後再試一次:
git fetch
哦!?可以看到上面有一個小小的提示,也就是
master->origin/master
這個可以解讀成,它就是一個從master分出去的分支這樣,
然後進度還比它新,but它並不是一個正式的branch。
這個時候如果要讓Git的進度跟上從GitHub上fetch下來的東西,我們就用一個熟悉的陌生人:
git merge origin/master
如果我們知道Fetch到底在幹些什麼,Pull應該就算更簡單的一件事情了,首先來改一下剛剛的README:
然後:
git pull
這個時候,就會是fetch+merge的結果了,順吧?
然後,其實也有另外一種pull的方式,叫做:
git pull --rebase
這個其實就是fetch下來之後,用rebase的方式去處理,讓整個commit紀錄不用再多出一個,詳情可以去看merge以及rebase的差別。
總之,Push、Pull大概就是這樣的兩個概念,如果這篇文章有幫助到在學Git的大家,應該就值得了XD
嗯,寫到現在大概知道一些Swift與Git的基本技巧與概念,希望可以在實作中更熟習,有時候碰到自己不熟悉的狀況時,還是要上網找或是翻書,這些都會在開發中讓你更有系統地去判斷現在問題的來源!
總之,鐵人賽算是挑戰成功啦XD
下台一鞠躬(撒花
之後應該還會在Medium上努力寫文啦,之後也會思考自己的blog經營的面向會往什麼方向,許多基本的知識前輩們其實都已經寫了很多文章了,或許我可以做的是翻譯?
如果有興趣可以來我的blog逛逛?
我是MJ,咱們下次鐵人賽 or Medium再見。
鐵人賽